package com.yuxi.Service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.google.gson.JsonElement;
import com.yuxi.Entity.Information;
import com.yuxi.Entity.InformationPort;
import com.yuxi.Entity.PrisonStructure;
import com.yuxi.Entity.TaskInformationView;
import com.yuxi.Entity.UserInfo;
import com.yuxi.Request.InformationQuery;
import com.yuxi.Request.Page;
import com.yuxi.Response.InfoCount;
import com.yuxi.view.UserPowerView;

@Service
public interface UserQueryService {
	/**
	 *初审 获取任务list 
	 * */
	public  Page<Information> getInformationFirstCheck(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,UserPowerView userPower);
	
	/**
	 *复核 获取任务list 
	 * */
	public  Page<Information> getInformationReCheck(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,Integer portId);
	/**
	 *审核  获取任务list 
	 * */
	public  Page<Information> getInformationCheck(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,Integer portId);
	/**
	 *信息研判  获取任务list 
	 * */
	public  Page<Information> getInformationInfoResearch(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,UserPowerView userPower);
	/**
	 * 任务派遣  监区领导
	 * */
	public  Page<Information> getInformationTaskDispatch(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,Integer portId);

	/**
	 * 即时任务派遣 监区领导
	 * */
	public  Page<Information> getInformationCurTaskDispatch(InformationQuery inforQuery,UserInfo user,String ip,Page<Information> p,Integer portId);
	/**
	 * 任务完成情况 接收任务的民警
	 * */
	public  Page<TaskInformationView> getInformationInfoFinsh(InformationQuery inforQuery,UserInfo user,String ip,Page<TaskInformationView> p);

	public Page<TaskInformationView> getInformationAlreadyFinsh(InformationQuery infoQuery, UserInfo user, String ip,Page<TaskInformationView> p);
	/**
	 * 所有超期未完成的信息
	 * @param inforQuery
	 * @param user
	 * @param ip
	 * @param p
	 * @return
	 */
	public  Page<TaskInformationView> getAllTimeOutInfoList(InformationQuery inforQuery,UserInfo user,String ip,Page<TaskInformationView> p);

	
	/**
	 * 带点评信息列表
	 * */
	public Page<Information> getInformationComment(InformationQuery infoQuery, UserInfo user, String ip,Page<Information> p,Integer portId);
	
	/**
	 * 带评价的信息列表
	 * */	
	public Page<Information> getInformationRate(InformationQuery infoQuery, UserInfo user, String ip,Page<Information> p);

	public Page<Information> getInformationAlreadyDoByFLow(InformationQuery infoQuery,int flowId,UserInfo user, String ip,Page<Information> p,List<InformationPort> ports);
	
	public Page<Information> getAllInformation(InformationQuery infoQuery  ,Page<Information> p,PrisonStructure pStructure);
	public Page<Information> getLookCommentInformation(InformationQuery infoQuery  ,Page<Information> p,UserInfo u);
	public Page<Information> getLookEvaluationInformation(InformationQuery infoQuery  ,Page<Information> p,UserInfo u);

	

	
	/**
	 * 获取已录入任务情况的任务
	 * */
	public Page<TaskInformationView> getAreadyInputTaskContext(InformationQuery inforQuery,UserInfo user,String ip,Page<TaskInformationView> p);

	
	/**
	 * 获取所有信息
	 * @param inforQuery
	 * @param user
	 * @param p
	 * @return
	 */
	public Page<Information> getAllinfoList(InformationQuery inforQuery,UserInfo user,Page<Information> p);

	/**
	 * 获取用户待处理信息汇总
	 * @param u
	 * @return
	 */
	public InfoCount  getFlowCount(UserInfo u,UserPowerView power);
	
	/**
	 * 获取已调配信息
	 * @param inforQuery
	 * @param p
	 * @param u
	 * @return
	 */
	public Page<Information>  getInfoDispatch(InformationQuery inforQuery,Page<Information> p,UserInfo u);

	/**
	 *获取待派遣的信息列表
	 * @param inforQuery
	 * @param p
	 * @param u
	 * @return
	 */
	public Page<Information> getCanTaskDisList(InformationQuery inforQuery,Page<Information> p,UserInfo u);
	
	/**
	 * 获取已派遣的任务列表
	 * @param inforQuery
	 * @param p
	 * @param u
	 * @return
	 */
	public Page<TaskInformationView>  getUserDispatchList(InformationQuery inforQuery,Page p,UserInfo u);
	public Page<Information> getAllinfoList(InformationQuery inforQuery, UserInfo user, Page<Information> p,Integer portID );

}
